let express = require("express")
let db = require("./db")
let userModel = require("./model/userModel")

let app = express()

db.then(() => {
    app.use(express.urlencoded({extended: true}))

    app.post("/login", async(req, resp) => {
        console.log(req.body)
        // 1. 获取用户的输入
        const {email, password} = req.body
        // 2. 校验数据的合法性
        const emailReg = /^[a-zA-Z0-9_]{2,16}@[a-zA-Z0-9]{2,16}\.com$/
        const passwordReg = /^[a-zA-Z0-9_#]{6,16}$/
        if(!emailReg.test(email)){
            resp.send("邮箱输入不合法! 要求邮箱用户名2-16位, 不包含特殊字符")
            return
        }else if(!passwordReg.test(password)){
            resp.send("密码输入不合法, 密码应为6-16位字符, 不包含特殊字符")
            return
        }
        // 3. 检查该邮箱是否注册过
        try{
            let findResult = await userModel.findOne({email, password})
            if(findResult){
                console.log("邮箱为: ${email}的用户登录成功")
                // 客户端跳转, 重定向
                resp.redirect("https://www.baidu.com/")
            }else{
                resp.send("用户名或密码输入错误")
            }
        }catch(err){
            console.log(err)
            resp.send("阿偶, 网络不稳定, 请稍后重试")
        }
    })
    
    
    app.post("/register", async (req, resp) => {
        console.log(req.body)
        // 1. 获取用户的输入
        const {email, nick_name, password, re_password} = req.body
        // 2. 校验数据的合法性
        const emailReg = /^[a-zA-Z0-9_]{2,16}@[a-zA-Z0-9]{2,16}\.com$/
        const nickNameReg = /^[\u4e00-\u9fa5]{2,6}$/gm
        const passwordReg = /^[a-zA-Z0-9_#]{6,16}$/
        if(!emailReg.test(email)){
            resp.send("邮箱输入不合法! 要求邮箱用户名2-16位, 不包含特殊字符")
            return
        }else if(!nickNameReg.test(nick_name)){
            resp.send("昵称输入不合法, 昵称应为中文")
            return
        }else if(!passwordReg.test(password)){
            resp.send("密码输入不合法, 密码应为6-16位字符, 不包含特殊字符")
            return
        }else if(password !== re_password){
            resp.send("两次输入密码不一致")
            return
        }
        // 3. 检查该邮箱是否注册过
        try{
            let findResult = await userModel.findOne({email})
            if(findResult){
                resp.send(`注册失败, ${email}邮箱已经被注册了`)
            }else{
                await userModel.create({email, nick_name, password})
                console.log("邮箱为: ${email}, 昵称为: ${nick_name}的用户注册成功了")
                resp.send("注册成功了")
            }
        }catch(err){
            console.log(err)
            resp.send("阿偶, 网络不稳定, 请稍后重试")
        }
    })
    
    app.get("/login", (req, resp) => {
        resp.sendfile(__dirname +"/public/login.html")
    })
    
    app.get("/register", (req, resp) => {
        resp.sendfile(__dirname +"/public/register.html")
    })
}).catch((err) => {

})

app.listen(3000, (err) => {
    if(!err){
        console.log("服务器启动成功了")
    }else{
        console.log(err)
    }
})